#ifndef SIGNALDIAGRAM_H
#define SIGNALDIAGRAM_H

#include <QObject>
#include <QPaintDevice>
#include <QPainter>
#include <QImage>
#include <QList>
#include <QFont>
#include <QColor>
#include <QDebug>

#include "signalcontainer.h"

class SignalDiagram : public QObject
{
private:
    //Функция сравнения
    static bool compareByIndex(SignalContainer *one, SignalContainer *two);

    // Рендер
    void paintImage(QPaintDevice* img, qreal scale);

    int signalCount;

    int startSignal;

    int startData;

    int dataCount;

    QVector<SignalContainer*> BackUp;

public:
    SignalDiagram();

    // Ширина отрисовки сигнала
    int widthPerSignal;

    // Высота полосы сигнала
    int heightPerSignal;

    // Расстояние между полосами сигнала
    int spaceHeight;

    // Расстояние для надписи
    int spaceForTitles;

    //Шрифт надписей диаграммы
    QFont drawFont;

    QColor penColor;

    int timeInterval;

    bool timeTableVisible;

    bool timeTagsVisible;

    // Cгенерировать диаграмму сигналов
    void generateDiagram(const QVector<SignalContainer*> &data, int w, int h, int start, int beginsignal, qreal scale);

    // Сгенерировать диаграмму сигналов c отрисовкой
    void generateDiagram(const QVector<SignalContainer*> &data, QPaintDevice* device, int start, int beginsignal, qreal scale);

    // Генерировать изображение
    QImage* generateImage(qreal scale);
};

#endif // SIGNALDIAGRAM_H
